ユーザーFrom内のTextBox色
教えてください
フォームにはTextBoxが60個ぐらい
あります。
そこで、Fromを表示させたときに
空欄のTextBoxのみバックカラーを変えたいのですが
どのような記述をすれば良いのでしょうか?教えてください。
Dim Cnt As Integer
For Cnt = 60 To 125
If Me.Controls("TextBox" & Cnt).Text = "" Then
Controls("TextBox" & Cnt).BackColor = RGB(204, 255, 255)
End If
ちなみこれだと空欄のTextBoxは変わらないです!!!
Next
VBAで下記のように配列に設定したNULL値を判定しようとしました。
Dim str()
ReDim Preserve str(2)
str(0) = "aaa"
str(1) = Null
str(2) = "bbb"
以下(1)、(2)の分岐処理ではNullと判定されませんでした。
どのように判定すれば良いでしょうか?
(1)
If str(1) = Null Then
Debug.Print "Null値です"
End If
(2)
If str(1) = "" Then
Debug.Print "Null値です"
End If
エクセルVBA初心者です。
ユーザーフォームを使ったセルの上書きについて質問があります。(以下は自分が作成済みの内容)
A B
りんご 1
みかん 2
これらがセルにあります。この中から上書きしたいものを取得します。
ユーザーフォーム1にリストボックスとコマンドボタンを1つずつ設置し、そのリストボックスにA列の文字を入れました。リストボックスの中から上書きしたい文字を選択し、コマンドボタンを押すと、ユーザーフォーム2が表れ、そこには2つのテキストボックスと1つのコマンドボタンがあります。
ここからが分からないのですが、例えば上書きしたい文字に「みかん」を選び、ユーザーフォーム2のテキストボックス1に「バナナ」、テキストボックス2に「3」といれると
A B
りんご 1
バナナ 3
このようにしたいのです。
実際はもっと複雑な内容のものを作成しております。しかし上記の疑問が解決すれば、今自分が抱えている問題も解決すると思います。
以下はユーザーフォーム1のコードです。これを提示することにより回答される方が楽になるかどうかは分かりませんが、一応提示しておきます。(lstRowを使っている理由はA列とB列の文字・値が増加していく可能性があるため)
Private Sub UserForm_Initialize()
CommandButton1.Enabled = False
Dim lstRow As Long
Dim i As Long
Dim q As Long
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "200 pt"
lstRow = Cells(Rows.Count, 1).End(xlUp).Row
q = 0
For i = 2 To lstRow
With ListBox1
.AddItem
.List(q, 0) = Cells(i, "C").Value
End With
q = q + 1
Next
End Sub
============================================================================
Private Sub CommandButton1_Click()
UserForm2.TextBox1.Value = Me.ListBox1.Value
Unload UserForm1
UserForm2.Show
End Sub
教えてください。マクロは初心者です。
↑先ほど、http://oshiete1.goo.ne.jp/qa5695407.html
で、ある親切な方に以下のマクロを教えて頂きましたが、私がその時にまとめて聞くのを忘れてしまい、改めて教えていただきたく思います。
------------------------------------------------
Sub test()
Dim R As Long
For R = 1 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(R, "B").Value = "土" Or CellsR, "B").Value "日" Then
Cells(R, "A").Resize(1, 5).Interior.ColorIndex = 6
End If
Next R
End Sub
----------------------------------------------------
上記のマクロを1シートでなく、全シートでまとめて実行したいのですが(どのシートも同様の内容なので)、どうすればいいのかわかりません。
どの個所にどんなコードを入れればよいのでしょうか?
よろしくお願いします。
【XP、2003】
教えてください。マクロは初心者です。
↑先ほど、http://oshiete1.goo.ne.jp/qa5695407.html
で、ある親切な方に以下のマクロを教えて頂きましたが、私がその時にまとめて聞くのを忘れてしまい、改めて教えていただきたく思います。
------------------------------------------------
Sub test()
Dim R As Long
For R = 1 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(R, "B").Value = "土" Or CellsR, "B").Value "日" Then
Cells(R, "A").Resize(1, 5).Interior.ColorIndex = 6
End If
Next R
End Sub
----------------------------------------------------
上記のマクロを1シートでなく、全シートでまとめて実行したいのですが(どのシートも同様の内容なので)、どうすればいいのかわかりません。
どの個所にどんなコードを入れればよいのでしょうか?
よろしくお願いします。
【XP、2003】
VBA初心者です。A1からA11にデータがあります。画面のテキストボックスに例えば、山と入力し、ボタンをクリックする度、その文字を含むセルに色をつけようとしています。山を含むデータが3個あれば3回ボタンをクリックしないと終了しないというわけです。
データに山の文字を含むセルが複数あった時、下のプログラムでは1回ボタンをクリックした時、色が付きます。2回目以降は(1)でエラーです。
山と言う文字がA3、A6、A9にあれば、1回目はA3を検索、2回目以降はA4から検索しA6で着色、3回目はA7から検索してA9で着色、最後の行までいけばデータは以上、というメッセージを表示ということです。
プログラムは検索部分だけ記載しています。
'データ領域、最終行取得
Worksheets("Sheet1").Activate
Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.Select
If flag = False Then
Set c = Worksheets("Sheet1").Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns)
c.Interior.ColorIndex = 4
flag = True
Else
(1) Set d = Worksheets("Sheet1").Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.FindNext(c)
d.Interior.ColorIndex = 4
End If
flagは
Option Explicit
Dim flag As Boolean
で宣言。flagは、
Private Sub UserForm_Click()
flag = False
End Sub
でフォームロード時にfalseとします。
Flagはテキストボックスに入力した文字をクリアするボタンをクリックした時再びfalseに設定します。
Flagがfalseの時は1度目の検索。2度目以降はTrue。やりたいことは、
1,1度目の検索のセルのアドレスをどこかに保存し、2回目以降のボタンのクリック(Flagがtrue時)はそのセルの次のセルから検索を行う。
2,2回目以降ヒットしたセルの次のセルから検索する。
3,データの最後のセルまで検索した時、メッセージで、"検索終了"といった表示を出す。
(1)はわからないので不完全のプログラムのまま記載しています。特に、1回目の検索したセルのアドレスをどう取得し、Range(Cells(2, 1), Cells(maxRow, 1))に代入すればよいのかわかりません。
Flagをたてるというのはいいアイデアに思ったのですが・・・
(1)前後のプログラムででどうやれば、1回目の検索時(Flagがfalseの時)のセルのアドレスを取得し、2回目以降のボタンのクリック時まで保存し、(1)に代入していけばよいのかわかりません。
ここまではナントカできたのですが・・・お助けください、よろしくお願いします。