• ベストアンサー

ボタンをクリックすると・・・エクセル?

下記のようなことがしたいのですが、 office系のソフトでできますか? ボタンをクリックする度に、 指定した場所に、A→B→C…と繰り返し表示が変わっていく。 できるのであれば、どのような方法で作ればいいのか教えてください。 宜しくお願いいたします。 環境:Win XP

質問者が選んだベストアンサー

  • ベストアンサー
  • char0078
  • ベストアンサー率27% (32/118)
回答No.1

A1~A25に1から25までの数字を入力。 A26には0(ゼロ)を入力。 B1~B26にAからZまでのアルファベットを入力。 C2に =MOD(C1,26) を入力。 C3に =VLOOKUP(C2,A1:B26,2,FALSE) を入力。 ここで 表示→ツールバー→フォーム を選んで、 スピンボタンを適当な場所に作ります。 そのスピンボタンを右クリック→コントロールの書式設定→コントロールタブで、 最小値1、最大値10000(適当)、変化の増分1、リンクするセル$C$1 としてください。 これでスピンボタンをクリックするたびにC1が1ずつ増えて行き、C3のアルファベットがA~Zでループします。 ボタンを10000回クリックすれば止まりますが。

yutaro2003
質問者

お礼

すばらしいです、できました!! ありがとうございます!!

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

タイトルでも、曖昧な書き方になっていますが、Office系のソフトっていうのは、Excelで良いのですね。もし、違う場合でも、Range("A1")の部分を書き換えれば、何とか利用できるはずです。 シートモジュールか、標準モジュールに貼り付けて、ボタンに設定すれば出来るはずです。以下は、A~Zですが、その部分をご自由に書き換えが可能です。 Sub Loop_String1()  Dim myStr As String  Dim myRng As Range  Dim num As Integer  '=ABC・・・を、お好きな順序で書き換えてください。  Const myStrings As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"  'A1 の中を、指定してください。  Set myRng = Range("A1")  num = Len(myStrings)  myStr = myRng.Value  If myStr Like "[A-Z]" Then   myRng.Value = Mid$(myStrings, (InStr(myStrings, myStr) Mod num) + 1, 1)   Else   myRng.Value = Mid$(myStrings, 1, 1)  End If  Set myRng = Nothing End Sub なお、ワークシート関数で考えると、その文字の位置を取得するのは、FIND関数です。それに、MOD(文字位置,26)+1 で、次の文字を、MID関数で出せばよいのですから、 =MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",MOD(FIND(A1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ"),26)+1,1) ということになりますから、文字列を取得して、書き換えるだけのマクロでも可能です。

yutaro2003
質問者

お礼

・・・私には少し難しいご回答でしたが、 じっくりこのとおりやってみます! ありがとうございました!

関連するQ&A