- ベストアンサー
ボタンをクリックすると・・・エクセル?
下記のようなことがしたいのですが、 office系のソフトでできますか? ボタンをクリックする度に、 指定した場所に、A→B→C…と繰り返し表示が変わっていく。 できるのであれば、どのような方法で作ればいいのか教えてください。 宜しくお願いいたします。 環境:Win XP
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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回クリックすれば止まりますが。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
タイトルでも、曖昧な書き方になっていますが、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) ということになりますから、文字列を取得して、書き換えるだけのマクロでも可能です。
お礼
・・・私には少し難しいご回答でしたが、 じっくりこのとおりやってみます! ありがとうございました!
お礼
すばらしいです、できました!! ありがとうございます!!