プロが教えるわが家の防犯対策術!

よろしくお願いします。

ユーザーフォームを使って作業しています。
その中で、コンボボックス1で指定した名前を検索値として、VLOOKUPを使ってあるシート(例:シート名「時間検索」)からセルの値をテキストボックスに表示させるようにしたいのです。

コードを作成し表示させることはできたのですが、セルに入っている値の書式が「[h]:mm」の時間形式(例:19:00)のためか、セルの値を引っ張ると小数点(例:0.79166....)で表示されます。

色々と調べてみた中で、format関数を使ったりしてみたんですが不首尾に終わっています。

なんとかテキストボックスに、セルと同じ形式で表示したいのですが、どのように考えればよろしいでしょうか?
ご教示お願いいたします。

質問の仕方が悪かった場合は補足・訂正させていただきますので、どうぞよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

方法1


textbox1 = format(application.vlookup(combobox1, worksheets("シート名").range("検索対象範囲"),列,false), "[h]:mm")


方法2
dim r as long
r = application.match(combobox1, worksheets("シート名").range("左端列:列"), 0)  ’★
textbox1 = worksheets("シート名").cells(r, "欲しい列番号").text

★言わずもがなですが
 range("A:A")のように列:列指定して検索すれば直接の行番号が取得できる
 range("A4:A10")のように範囲指定したときは,勿論その先頭セルからの移動量が取得される


方法3
dim h as range
set h = worksheets("シート名").range("左端列").find(what:=combobox1, lookin:=xlvalues, lookat:=xlwhole)
if not h is nothing then
textbox1 = h.offset(0, 列数).text
end if




#各方法共通:
Comboboxの値は「文字列」なので,シート上の「数値」を検索する場合は変換が必要です
    • good
    • 0
この回答へのお礼

ありがとうございます。
方法1が一番しっくりきましたので試してみたところばっちり動きました。VLOOKUP全体をフォーマット関数で規定すればよかったんですね!これで今後も応用できそうです。

方法2と3は、今回は上記操作を複数回行わなければいけない関係上、長さの面から私にはまだ早いと感じました。今後コードを熟読して理解していきたいと思います。

本当にありがとうございました!

追記
コンボボックスでは文字列を扱っているため、今回は問題なく検索できました。今後の参考にさせていただきます。

お礼日時:2012/01/25 18:27

ANo.1です。


何に困っているのかようやく判りました。
セルでは表示書式で24時を超える時間を表示できるが、VBAでは出来なくって困っているって事ですよね?

案1.Vlookupをワークシート上でやって、その結果セルのTextプロパティをTextBoxに入れる

案2.Application.WorksheetFunctionで24時を超える表示にしてしまう。

nRtn = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("○○○").Range("A3:G200"), 3, False)
TextBox1.Value = Application.WorksheetFunction.Text(nRtn, "[h]:mm")
    • good
    • 0
この回答へのお礼

たびたびお手数をおかけしました、ありがとうございます。

案2がすごくわかりやすかったです。一度変数に格納してそれをのちに変更するという形ですね。
こういったこともできるのかと目からうろこが落ちる思いです。

今回はN0.3さんの案をいただきましたが、こういったアプローチも今後必要になってくるかもしれませんので、大切に脳内にとどめておきたいと思います。

ありがとうございました!

お礼日時:2012/01/25 18:30

VBAの質問らしいが、エクセルの基礎が判ってないのに、VBAなどやろうとしている。


(1)エクセルの時刻データの「セルの値」は24時間を1とする、小数点の値なのだ。
0.79166など当たり前。日付・時刻シリアル値のことが判ってない。
Googleででも照会して勉強のこと。
(2)関数でも出来ることをVBAなどでやってないか。関数は「セルの値」を判別・加工・計算するもの
VBAでセルの値などを触るときも、普通は「セルの値」を扱っていることが多いので認識すること。
セルの持つ情報の多畳性(セルの値、標示形式、コメントなど色々あるのだ)を判っていなくて、セルの値と表示形式が分けて理解されていないのでは。
書式については関数では触れられない。だから書式は式を入れたセルに別途設定しないとならない。
ただしTEXT関数(VBAではFormat)で表示形式を適用した結果にすることは出来る。

A1:A2
100:3010:30:00
201:3021:30:00
D1:E2
10:30:00
21:30:00
ーーー
B1セルに =TEXT(VLOOKUP(A1,$D$1:$E$2,2,FALSE),"hh:mm")
下方向に式を複写。
,"hh:mm"の部分は自由に。
但しTEXT関数を使うと、全体が文字列になる。
そうしないでセルの標示形式の設定をやるほうが良い場合が多いと思う。
    • good
    • 0
この回答へのお礼

正直なところ、基礎がわかっていればこんな質問はしていませんし、あなたの仰っていることはわかっています。セルの値を扱っていることがわかっているが、セルの値をどう時刻表示に変えるかがわからないので教えてほしいということです。
そして、フォームを使ってきわめて一般的に表示をしたいので、エクセル上でVLookupを使うことができないんです。というかできればやっております。

ともあれ、ありがとうございました。

お礼日時:2012/01/25 18:07

セルに表示したままの文字列をTextboxに入れたいなら


TextBox1.Value = Worksheets(1).Range("A1").Text

こんな感じでTextプロパティを使ってみてください。
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございます。
現在以下のような形になっております。

TextBox1.Value = Application.WorksheetFunction.VLookup(ComboBox1.Value, Sheets("○○○").Range("A3:G200"), 3, False)

Textプロパティの挟みかたがわからず困っております。

お礼日時:2012/01/24 18:09

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルVBAでテキストボックスの値の取得と変更について

エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。

環境:WindowsXPでオフィス2002
状況:
エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C)
エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい

試した事:
コントロールを配置したシートに次のマクロ
TEXTBOX_C.Text = "これはコントロールのテキストボックス"
を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。

また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

Aベストアンサー

エクセルを新規に開きました。
そのSheet1に(コントロールツールボックスの)TextBoxを貼りつけました。
そのBook1から、ファイル-開くで別ブックを開きました。
別ブックのMojule1側に下記を書いて
Sub test02()
MsgBox Workbooks("book1").Worksheets("sheet1").textbox1.Text
End Sub
を実行すると、Book1のTextBoxに入れた文字列が表示
されました。
がそんな質問ではないのですか。

Qテキストボックスにセルの値を複写する方法

Excel VB (Excel 2007) の質問

Sheet1のセルD1、D2、D3に文字が入力されています。
そして同じシート上の任意の場所にテキストボックスが配置されています。
テキストボックスには"テキスト ボックス 1"、"テキスト ボックス 2"、"テキスト ボックス 3"と名前がつけられています。

セルD1の値を"テキスト ボックス 1"に複写、セルD2の値を"テキスト ボックス 2"に、セルD3の値を"テキスト ボックス 3"に
複写したいのですがどのようにすればいいのでしょうか。

インターネットのQ&Aで調べましたが同じような質問でも難しすぎて理解できません。
例えば以下のように簡単にできないでしょうか。
D1の値を"テキスト ボックス 1"に複写する場合

Range("D1").Select
Selection.Copy
ActiveSheet.Text."テキスト ボックス 1".Activate  'テキストボックスを選択(アクティブ)する記述が解りません。
ActiveSheet.Paste                 ’選択したテキストボックスに貼り付ける方法もわかりません。

勿論上記の記述ではうまくいきません。
VB初心者でお手数をおかけしますがよろしくお願いします。

Excel VB (Excel 2007) の質問

Sheet1のセルD1、D2、D3に文字が入力されています。
そして同じシート上の任意の場所にテキストボックスが配置されています。
テキストボックスには"テキスト ボックス 1"、"テキスト ボックス 2"、"テキスト ボックス 3"と名前がつけられています。

セルD1の値を"テキスト ボックス 1"に複写、セルD2の値を"テキスト ボックス 2"に、セルD3の値を"テキスト ボックス 3"に
複写したいのですがどのようにすればいいのでしょうか。

インターネットのQ&Aで調べましたが同じような...続きを読む

Aベストアンサー

テキストボックスにセルの値を入れるのだけならマクロは必要はありません。
 
【操作手順】
 ・テキストボックスス「テキスト ボックス 1」を選択する。
 ・数式バーで「=D1」を入力して【Enter】キーを押す。

  以上を"テキスト ボックス 2"、"テキスト ボックス 3"を同様に行う。

ネットでも色々説明しています。以下は手順を絵的に説明しています。
http://www.bayclotho.jp/blog/archives/907

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

Qエクセル・VBAでテキストボックスに入力された文字を

エクセル・VBAでテキストボックスに入力された文字を
B列から検索し、結果をユーザーフォームのリストbox
に表示したいのですがうまくいきません
検索は部分一致・大文字小文字無視で行いたいです
よろしくお願いします

Aベストアンサー

部分的に一致していても、リストに追加するように出来ますか?
If Range("B" & i).Value = TextBox1.Value Then

If Range("B" & i).Value Like "*" & TextBox1.Value & "*" Then
にするとか

また、表示された1・2列目をクリックすると、そのセル
をアクティブに出来ると良いのですが・・・
No1の方のコードをお借りします。
Private Sub ListBox1_Click()
Range("C:C").Find(what:=ListBox1.Value, LookIn:=xlValues, lookat:=xlPart, MatchCase:=False).Activate
End Sub
とかでは?

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QエクセルVBAで、テキストボックスにセルの値を入れる

宜しくお願いします。

エクセルデータの各項目を、すでに書式(表)が印刷された用紙のそれぞれの項目の位置に印刷させたいのですが・・・

各項目には、500行ぐらいのデータがあり、別のワークシートの表示させたい位置(すでに印刷された用紙にあわせてある)に各項目ごとのテキストボックスを作っておいて、そのテキストボックスに各項目のデータを1行ごとに表示させて、テキストボックスのフォント調整、印刷 ~を繰り返したいのですが、どのようなコードを書けばよいのでしょうか?

進め方としては、データシートからテキストボックスに各項目のデータが表示されたら、シート上でテキストボックスのフォントや位置の微調整が出来るようにしておいて、印刷ボタンをクリックすると印刷され、次へのボタンをクリックすると、次の行のデータがテキストボックスに表示されるようにしたい。

※印刷する場合は、テキストボックス内の文字のみ印刷(シートには印刷したくない文字書きたいので・・・)

また、そのフォームには、パターンが5つあって、データには1行ごとにパターン番号が入力されているとして、それぞれのパターンにあわせたテキストボックスの配置してあるシートへ行くようにもしたい。

データの入れ替わりが多いので、別のワークブックと繋がるような仕組みにしておいて、テキストボックスの配置してあるブック側から、データのあるブックを呼びに行ってデータを取りに行くようにしておきたい。

以上、条件が多くてすみませんが、VBAは初心者で、ほんの部分的にしかまだ分かりません。どなたか詳しい方宜しくお願いします。

宜しくお願いします。

エクセルデータの各項目を、すでに書式(表)が印刷された用紙のそれぞれの項目の位置に印刷させたいのですが・・・

各項目には、500行ぐらいのデータがあり、別のワークシートの表示させたい位置(すでに印刷された用紙にあわせてある)に各項目ごとのテキストボックスを作っておいて、そのテキストボックスに各項目のデータを1行ごとに表示させて、テキストボックスのフォント調整、印刷 ~を繰り返したいのですが、どのようなコードを書けばよいのでしょうか?

進め方としては...続きを読む

Aベストアンサー

前回の解答はプレビューで確認し、プレビュー画面の印刷ボタンを押せば印刷しますが、プレビュー画面を表示しないで直接印刷する場合は、単票印刷の書式覚えておく必要があります。
下記の修正は、印刷時にどのパターンの単票が必要かを知らせます。メッセージ表示のタイミングは、特定の印刷パターンを指定した時は印刷時最初のみ、全パターン指定時は各データ印刷毎です。特定の印刷パターンを指定すれば用紙をまとめてセットできるので実務的と思われます。

●**** 追加 **** と書いた範囲を追加、**** 修正 **** の1行を修正
Public Sub page_Print(sPatt, iPatt As Integer) '**** 修正 ****
'**** 追加 **** ↓
Dim myMsg As String 'メセージ
If iPatt = 0 Then
myMsg = (Worksheets("Sheet1").Range("B5") - 1) & " 行目" & vbLf
myMsg = myMsg & "印刷パターン " & StrConv(sPatt, vbWide) & " を印刷します。" & vbLf
myMsg = myMsg & "  用紙をセットしてください。" & vbLf & vbLf
myMsg = myMsg & "(印刷しない場合はキャンセルを押します。)" & vbLf & vbLf
If MsgBox(myMsg, vbOKCancel) = vbCancel Then
Exit Sub
End If
End If
'**** 追加 **** ↑

Range("Print_Area").Select: Selection.Font.ColorIndex = 2
ActiveWindow.SelectedSheets.PrintPreview 'PrintOut
Selection.Font.ColorIndex = xlAutomatic
Range("Print_Area").Cells(1, 1).Select

End Sub

●**** 追加 **** と書いた範囲を追加、**** 修正 **** の1行を修正
Public Sub job_Print() '指定して連続印刷

Application.ScreenUpdating = False
'**** 追加 **** ↓
If prtPattern <> 0 Then
myMsg = "印刷パターン " & StrConv(prtPattern, vbWide) & " を印刷します。" & vbLf
myMsg = myMsg & "  用紙を複数枚セットしてください。"
MsgBox myMsg, vbOKOnly
End If
'**** 追加 **** ↑
For rowCot = startRow To endRow '連続ページ印刷
Tensou rowCot, prtPattern
If prtPattern = 0 Or (prtPattern = shtPatt) Then '印刷パターンを判定
page_Print shtPatt, prtPattern '**** 修正 ****
End If
Next
Application.ScreenUpdating = True
Worksheets("Sheet7").Activate
End Sub

●**** 修正 ****の1行を修正(5シート同様に修正)
Private Sub CommandButton2_Click() 'シート単位の1ページ印刷ボタン
page_Print Right(ActiveSheet.Name, 1), 0 '**** 修正 ****
End Sub

前回の解答はプレビューで確認し、プレビュー画面の印刷ボタンを押せば印刷しますが、プレビュー画面を表示しないで直接印刷する場合は、単票印刷の書式覚えておく必要があります。
下記の修正は、印刷時にどのパターンの単票が必要かを知らせます。メッセージ表示のタイミングは、特定の印刷パターンを指定した時は印刷時最初のみ、全パターン指定時は各データ印刷毎です。特定の印刷パターンを指定すれば用紙をまとめてセットできるので実務的と思われます。

●**** 追加 **** と書いた範囲を追加、**** 修...続きを読む

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

QExcel VBA でテキストボックスの値をセルA列から検索

いつもお世話になります。
Private Sub CommandButton3_Click()
Dim 行 As String
Dim 列 As String
Dim 最終行 As String
Dim 検索行 As String
Dim メッセージ As Integer
Dim 一致 As Range
Dim myNO As Variant
Dim i As Long
Sheets(3).Select
最終行 = Range("A2").End(xlDown).Offset(1).Select
行 = ActiveCell.Row
列 = ActiveCell.Column
myNO = TextBox2.Value
検索行 = Range("A2").End(xlDown).Select
※・・・Set 一致 = Range("A2:検索検").Findwhat:=TextBox2,lookat:=xlWhole)
If 一致 Is Nothing Then
MsgBox "データがありません。新規コード入力します。"
Cells(行, 列 + 0) = UserForm1.TextBox2.Value
Cells(行, 列 + 1) = UserForm1.ComboBox7.Value
Else
i = Cells(行 - 1, "A")
Cells(i, 列 + 0) = UserForm1.TextBox2.Value
Cells(i, 列 + 1) = UserForm1.ComboBox7.Value
End If
End Sub

「エラー1004'Range'メソッドは失敗しました'Global'オブジェクト」とでます。※印が黄色になっています。
ユーザーフォーム1のテキストボックスの値をシート3のA列から検索して、一致すれば、A列の一致セルに上書き入力して、一致が無い場合はA列の空白セルに追加入力したいのです。よろしくお願い致します。

いつもお世話になります。
Private Sub CommandButton3_Click()
Dim 行 As String
Dim 列 As String
Dim 最終行 As String
Dim 検索行 As String
Dim メッセージ As Integer
Dim 一致 As Range
Dim myNO As Variant
Dim i As Long
Sheets(3).Select
最終行 = Range("A2").End(xlDown).Offset(1).Select
行 = ActiveCell.Row
列 = ActiveCell.Column
myNO = TextBox2.Value
検索行 = Range("A2").End(xlDown).Select
※・・・Set 一致 = Range("A2:検索検").Findwhat:=TextBox2,lookat:=xlWhole)
...続きを読む

Aベストアンサー

えっと、いろいろ改善の余地があるマクロなので、気がついたところを指摘していきます。

Dim メッセージ As Integer

この変数は使われてないので宣言は不要かと思います。(もし質問文のVBAが抜粋で、後で使うのなら別ですが)

最終行 = Range("A2").End(xlDown).Offset(1).Select

この「最終行」に範囲をSelectした結果を代入しているのは、意味がありません。最終行には True が代入されます。最終行のセル番地を代入したいのであれば、

最終行 = Range("A2").End(xlDown).Offset(1).Addresss

とする必要がありますが、その次の2行で行と列を取得しており、そして変数「最終行」はプロシージャの最後まで使われていません。

myNO = TextBox2.Value

この変数も最後まで使われていません。Findの引数として使おうとしたのかと思いますが、Findではもう一度TextBox2と書いてしまっています。

検索行 = Range("A2").End(xlDown).Select

これも先の最終行と同じく、Selectした結果を代入しているため、Trueが代入されてしまいます。今までの指摘は、マクロの動作に影響を与えるものではありませんでしたが、ここは違います。この後で検索範囲の一番下のセルとして使おうとしても、これではその番地が代入されないのです。

その次の、

Set 一致 = Range("A2:検索検").Findwhat:=TextBox2,lookat:=xlWhole)

は書式が崩れてますがですが、多分書きたいことは

Set 一致 = Range("A2:検索行").Find(what:=TextBox2,lookat:=xlWhole)

ですよね。しかし"A2:検索行"という範囲指定はできません。「検索行」は変数なので文字列に含めてしまってはいけません。「検索行」にセル番地が入っているのであれば、Range("A2:" & 検索行) あるいは Range("A2",検索行") のようにしないと正しく領域を指定できません。

以上を踏まえて、Range型の変数を使うようにして書き直してみました。

Private Sub CommandButton3_Click()
 Dim 最終行 As Range 'Stringから変更
 Dim 検索行 As Range 'Stringから変更
 Dim 一致 As Range
 Sheets(3).Select
 Set 検索行 = Range("A2").End(xlDown)
 Set 最終行 = 検索行.Offset(1)
 Set 一致 = Range("A2", 検索行).Find(what:=TextBox2, lookat:=xlWhole)
 If 一致 Is Nothing Then
  MsgBox "データがありません。新規コード入力します。"
  最終行.Value = UserForm1.TextBox2.Value
  最終行.Offset(0, 1).Value = UserForm1.ComboBox7.Value
 Else
  一致.Value = UserForm1.TextBox2.Value '同じ値なので本来は不要
  一致.Offset(0, 1).Value = UserForm1.ComboBox7.Value
 End If
End Sub

えっと、いろいろ改善の余地があるマクロなので、気がついたところを指摘していきます。

Dim メッセージ As Integer

この変数は使われてないので宣言は不要かと思います。(もし質問文のVBAが抜粋で、後で使うのなら別ですが)

最終行 = Range("A2").End(xlDown).Offset(1).Select

この「最終行」に範囲をSelectした結果を代入しているのは、意味がありません。最終行には True が代入されます。最終行のセル番地を代入したいのであれば、

最終行 = Range("A2").End(xlDown).Offset(1).Addresss

...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QVBAフォームのテキストボックスに初期値を表示するには?

VBAのフォームのテキストボックスに、初期値としてフォームを開いた当日の日付を表示したいのです。
開いたときは今日の日付が既に表示されていて、必要に応じて書き換える、そんなふうにしたいのですが。

Aベストアンサー

こんにちは。

こういうことかな?

Private Sub UserForm_Initialize()
  TextBox1.Text = Format$(Date, "yy/mm/dd")
End Sub


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング