• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA)

VBAプログラミングについての質問

Meegerenの回答

  • ベストアンサー
  • Meegeren
  • ベストアンサー率44% (204/459)
回答No.2

耳に障るかもしれませんが、プログラムを作る者として予約語は憶えて当然の物です これはVBAに限らず、どんな言語でも大前提ですね VBAの場合、補助機能でドロップダウンから選ぶことができる場合があります ただし、これは参照設定で指定されているライブラリーファイルの物だけです 設定してなければ、ドロップダウンリストは出てきません VBAでは「?」は使いません おそらくは誰かのプログラムを見た時に「’」(コーテーション)の後につけたコメント文ではないかと たまに「If」の説明に「?」を使う人がいますので、プログラム本体とコメントがごっちゃになってるような気がします VBAの場合はあくまで「Visual Basic for Applications」ですから、アプリであるACCESSやEXCELの為の言語ですので、そのまま見た目通りに実行されますね >本当はそのまま横に長くプログラムが羅列してありその状態で、実行できるのでしょうか? ダメです。予約語は区切って改行してください。エラーになります 通常では使いませんが、データベースからデータを引き出す時にSQL文を書いたりしますが、そういった場合は横に長くなりますので、適当なところで区切って改行しますね その時に行末に「_ &」(アンダーバー ブランク アッパサンド)をつけたりします 正直、憶えるコツなんて無いですよ 忘れないようにするコツがあるだけ 気になったことはノートにメモしておくこと 肉筆で書くことで忘れにくくなりますし、忘れてもノートを見れば思い出すしますから

nafun0404
質問者

お礼

ご回答ありがとうございます。やはりコツとかは、ないでのですね。地道に私も勉強します。ありがとうございました。

関連するQ&A

  • VBA 選択したセルが空白であったらシートを削除

    こんばんは!いつもお世話になっています。 選択したシート1のセル(C9)が空白であったら、選択したシートを削除するマクロ(VBA)を作りましたが、上手く作動しなくて困っています。 どうしたらよいのかよろしくお願い致します。 'シート1のセルC9を選択し、空白か判断する Sub セルの選択()   Worksheets("Sheet1").Activate   Range("C9").Select  If Len(Application.Trim(ActiveCell)) = 0 Then   MsgBox("空白セル")  End If End Sub '現在アクティブなシートを削除する Sub DeleteWorksheet() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub

  • 空白のセルを行削除する。EXCELマクロなのですが・・

    VBA初心者です。 データーをHPから、単純にコピーしてきて、 EXCELに貼り付けています。 フィルターをかけても、画像かなにかがセルに張り付いているのか、 空白行をすべて削除できません。 いろいろ試して(HPから、空白セルの行削除について書かれてあるマクロを貼り付けて)動いたのが、このVBAです。 しかし、遅いので、早いVBAに簡略できればいいのですが。。 大体、1000行ぐらいの文字を貼り付けて、3/1ぐらいが空白行です。A行のセルの空白のみを、削除したいのですが。  まったくの素人なので、わかりません。 どうかよろしくお願いいたします。 Sub 空白の削除() x% = Worksheets("sheet1").Range("A65536").End(xlUp).Row For i = x% To 1 Step -1 If Worksheets("sheet1").Cells(i, 1).Value = "" Then Worksheets("sheet1").Rows(i).Delete Next End Sub

  • エクセルVBAで作ったコードを実行しても動作しない

    エクセルVBAで『データワン』シートと『データツー』シートと『まとめ』シートがあり、 『データワン』シートと『データツー』シートの全ての情報を 『まとめ』シートにコピーしてまとめるようにしました。 マクロを実行するには、Visual Basicを開いてF5を押しています。 それを『データワン』シートか『データツー』シートの中身の一部分でも変更すると そのときに自動的にマクロが実行されるようにしたいです。 Microsoft Excel Objectsのsheet1とsheet2(sheet3は空白のまま)に Private Sub worksheet_change(ByVal Target As Excel.Range) Call macro1 End Sub を入れ、 次に、標準モジュールのModule1に Sub macro1() With Worksheets("まとめ") .Cells.ClearContents On Error Resume Next Worksheets("データワン").Range("C1:BE50").SpecialCells(xlCellTypeConstants).EntireRow.Copy _ Destination:=.Range("A1") Worksheets("データツー").Range("C1:BE100").SpecialCells(xlCellTypeConstants).EntireRow.Copy _ Destination:=.Range("A" & .UsedRange.Rows.Count + 1) End With End Sub を入れました。 『データワン』シートと『データツー』シートの情報を書き換えても 手動でマクロを実行してみましたが、何も起こりません。 書き方が間違っているのでしょうか?

  • VBAで作成したComboboxにVBAでマクロを割り当てたい。

    下記コードでcomboboxをつくったのですが 作成されたCombobox1のComboBox1_Changeエベントに 標準モジュール内のSub cal をVBAで割り当てたいのですが可能でしょうか。 コンボボックス作成マクロ x=0 y=0 With Worksheets("Sheet1").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False) .Left = X .Top = Y .Width = 53.25 .HEIGHT = 18 .ListFillRange = "AAA" End With これで作成したコンボボックスに標準モジュール内マクロをVBAで割りあてしたい。 標準モジュール sub cal ・ ・ end sub

  • VBAで「Shift+ctrl+↓」のようなコード

    毎度お世話になっております。 VBA初心者です、下記の内容お教えください。 Sub Sample02_3() Dim cnt As Long cnt = WorksheetFunction.CountIf(ActiveSheet.Range("A1:A11"), "") MsgBox "空白は、" & cnt & "件です。", vbInformation End Sub のようなコード A1からA11のセルの中から空白を数えるマクロを作成しました。 ただこの場合だとワークシート上で検索範囲がA12以降に増えた場合 ・A12以降を数えません。 ・列全部を範囲にした場合、表外の空白まで数えてしまいます。 手動でやる場合は 検索列先頭で「Shift+ctrl+↓」でデータの途切れるセルまで選択をするのですが VBAマクロでこれを自動でやることは出来ないでしょうか?。 以上宜しくお願いいたします。

  • VBAの書き方を教えてください 2

    以前にこちらで質問をさせて頂き、(http://okwave.jp/qa/q8451754.html)これに、VBAを追記していきたいのですが、移動したシートがアクティブする方法がわかりません。 移動したシートのA1000をアクティブにする場合、教えて頂いたVBAにどこに何を入れれば宜しいのでしょうか? よろしくお願いします。 Private Sub CommandButton1_Click() Dim k As Long, myFlg As Boolean For k = 1 To Worksheets.Count If Worksheets(k).Name = Range("A1") Then myFlg = True Exit For End If Next k If myFlg = True Then Worksheets(k).Activate Else MsgBox "該当シートなし" End If End Sub

  • VBAでの複雑な関数の作動方法

    VBAのプログラミングで関数「=LEN($A$1)-LEN(SUBSTITUTE($A$1,"1",""))」を反映する方法について質問です。 以下プログラミングなら作動するのですが Sub Sample() Dim Wb As Workbook For Each Wb In Application.Workbooks Wb.Worksheets("Sheet1").Range("B1").Formula = "=LEN(A1)" Next Wb End Sub 上記のような複雑な関数になると「"」のせいなのかエラーが出て動作しません。 VBAプログラミングでは作動不可能なんでしょうか?

  • VBA 変数について

    VBA初心者でございます。 VBAでgrpという変数を設定し、それをキーにしてオートフィルタをしたいです。 以下のコードではエラーがでてしまうのは、なぜでしょうか? どうぞ宜しくお願いいたします。 Sub 絞り込み2() Dim grp Set grp = Worksheets("リスト").Cells(3, 2) Worksheets("マスタ0701").AutoFilterMode = False With Worksheets("マスタ0701").Range(Cells(3, "B"), Cells(Rows.Count, "CK").End(xlUp)) .AutoFilter Field:=13, Criteria1:=grp '.CurrentRegion.Select Range(Cells(3, "B"), Cells(Rows.Count, "CK").End(xlUp)).SpecialCells(xlVisible).Copy Worksheets("検索結果").Range("A1") '.AutoFilter End With End Sub

  • Excel VBAエラー”マクロシートに対する・・

    Excel VBAを勉強している者です。VBAプログラムで Sub Iro1() ・・・ End Sub Sub Iro2() ・・・ End Sub という処理のプログラムを作成しエクセルシートにボタンを作りマクロ登録をしようとすると ”マクロシートに対する参照を指定ください”とエラーが出ます。 すみませんが、解決方法を教えてください。

  • エクセルVBAについて

    エクセルVBA初心者で、勉強している者です。 今、ガントチャートのようなものを作っているのですが、 下記のような記述をしたのですがうまく動きません。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub 時間グラフ作成() If Worksheets("(1)(1)(1)(1)(1)").Range("F2").Value = "10:00" Then Worksheets("(2)(2)(2)(2)").Range("T2").Select With Selection.Interior .ColorIndex = 8 .Pattern = xlSolid End With End If End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ F2のセルを空にし、「""」で実行すると動きました。 色々調べてみたものの、煮詰まってしまいました・・・。 よろしくお願いいたします。